using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Proyecto2Bases.Models;
using Proyecto2Bases.CustomClasses.Manejadores;
using System.Data.SqlClient;

namespace Proyecto2Bases.CustomClasses.CargaDatos
{
    /// <summary>
    /// Permite la carga de los estados de cuenta para un cliente
    /// </summary>
    public class CargaEstadosCuenta
    {
        public static void CargarDatos(List<EstadoCuentaModel> pLista, int pIdCliente)
        {
            SqlCommand sqlcmd = new SqlCommand();
            sqlcmd.Connection = ManejadorDb.getInstance().getConexion();
            sqlcmd.CommandText = "TASP_ConsultaObtenerEstadosCuenta";
            sqlcmd.CommandType = System.Data.CommandType.StoredProcedure;
            sqlcmd.Parameters.AddWithValue("@IdCliente", pIdCliente);
            sqlcmd.Parameters.AddWithValue("ValorRetorno", -1);
            sqlcmd.Parameters[1].Direction = System.Data.ParameterDirection.ReturnValue;

            SqlDataReader sqlreader = sqlcmd.ExecuteReader();
            EstadoCuentaModel ecm = new EstadoCuentaModel();
            //EC.SaldoInicial, EC.PagoContado, EC.InteresNormalAcumulado
            while (sqlreader.Read())
            {
                ecm = new EstadoCuentaModel();
                ecm.IdCuenta = sqlreader.GetInt32(0);
                ecm.FechaCorte = sqlreader.GetDateTime(1);
                ecm.SaldoInicial = Convert.ToDouble(sqlreader.GetDecimal(2));
                ecm.PagoContado = Convert.ToDouble(sqlreader.GetDecimal(3));
                ecm.InteresNormalAcumulado = Convert.ToDouble(sqlreader.GetDecimal(4));
                ecm.TotalRetiros = Convert.ToDouble(sqlreader.GetDecimal(5));
                ecm.InteresMoratorioAcumulado = Convert.ToDouble(sqlreader.GetDecimal(6));
                ecm.CargoPorRetiro = Convert.ToDouble(sqlreader.GetDecimal(7));
                ecm.CargoPorAdministracion = Convert.ToDouble(sqlreader.GetDecimal(8));                
                pLista.Add(ecm);                
            }

            sqlreader.Close();

            foreach(EstadoCuentaModel ec in pLista)
            {
                ec.Movimientos = CargaMovimientos.CargarDatos(ecm.IdCuenta, ecm.FechaCorte, ecm.FechaCorte.AddMonths(-1));
            }
        }
    }
}